package com.hongmeng.operater.service.moduleResource.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.hongmeng.common.constant.Constants;
import com.hongmeng.common.core.domain.AjaxResult;
import com.hongmeng.common.core.domain.entity.SysDictData;
import com.hongmeng.common.core.domain.entity.SysDictType;
import com.hongmeng.common.utils.DateUtils;
import com.hongmeng.operater.domain.moduleResource.HmModuleResource;
import com.hongmeng.operater.domain.moduleResource.entity.QueryModuleEntity;
import com.hongmeng.operater.domain.moduleResource.entity.QueryModuleReturnEntity;
import com.hongmeng.operater.mapper.moduleResource.HmModuleResourceExtMapper;
import com.hongmeng.operater.mapper.moduleResource.HmModuleResourceMapper;
import com.hongmeng.operater.service.moduleResource.IHmModuleResourceService;
import com.hongmeng.system.mapper.SysDictTypeMapper;
import com.hongmeng.system.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 模块资源Service业务层处理
 *
 * @author hongmeng
 * @date 2021-01-04
 */
@Service
public class HmModuleResourceServiceImpl implements IHmModuleResourceService {

    @Autowired
    private HmModuleResourceMapper hmModuleResourceMapper;

    @Autowired
    private HmModuleResourceExtMapper hmModuleResourceExtMapper;

    @Autowired
    private ISysDictTypeService sysDictTypeService;

    /**
     * 查询模块资源
     *
     * @param id 模块资源ID
     * @return 模块资源
     */
    @Override
    public AjaxResult selectHmModuleResourceById(Integer id) {
        return AjaxResult.success(hmModuleResourceExtMapper.selectHmModuleResourceById(id));
    }

    /**
     * 查询模块资源列表
     *
     * @param hmModuleResource 模块资源
     * @return 模块资源
     */
    @Override
    public List<QueryModuleReturnEntity> selectHmModuleResourceList(QueryModuleEntity hmModuleResource) {
        return hmModuleResourceExtMapper.selectHmModuleResourceList(hmModuleResource);
    }

    /**
     * 新增模块资源
     *
     * @param hmModuleResource 模块资源
     * @return 结果
     */
    @Override
    public int insertHmModuleResource(HmModuleResource hmModuleResource) {
        hmModuleResource.setCreateTime(DateUtils.getNowDate());
        return hmModuleResourceMapper.insertHmModuleResource(hmModuleResource);
    }

    /**
     * 修改模块资源
     *
     * @param hmModuleResource 模块资源
     * @return 结果
     */
    @Override
    public int updateHmModuleResource(HmModuleResource hmModuleResource) {
        hmModuleResource.setUpdateTime(DateUtils.getNowDate());
        return hmModuleResourceMapper.updateHmModuleResource(hmModuleResource);
    }

    /**
     * 批量删除模块资源
     *
     * @param ids 需要删除的模块资源ID
     * @return 结果
     */
    @Override
    public int deleteHmModuleResourceByIds(Integer[] ids) {
        return hmModuleResourceMapper.deleteHmModuleResourceByIds(ids);
    }

    /**
     * 删除模块资源信息
     *
     * @param id 模块资源ID
     * @return 结果
     */
    @Override
    public int deleteHmModuleResourceById(Integer id) {
        return hmModuleResourceMapper.deleteHmModuleResourceById(id);
    }

    /**
     * 官网获取模块资源信息列表
     */
    @Override
    public AjaxResult queryModuleResourceList() {
        List<SysDictData> dictDataList = sysDictTypeService.selectDictDataByType(Constants.OWC);
        Map<String,Object> resultMap = new HashMap<>();
        for (SysDictData dictData: dictDataList) {
            QueryModuleEntity queryModuleEntity = new QueryModuleEntity();
            queryModuleEntity.setModuleType(dictData.getDictValue());
            List<QueryModuleReturnEntity> moduleReturnList = hmModuleResourceExtMapper.selectHmModuleResourceList(queryModuleEntity);
            resultMap.put(dictData.getDictValue(),moduleReturnList);
        }
        return AjaxResult.success(resultMap);
    }
}
